Enabling group communication is a popular application of computer networks. Groups of people use computer networks to share every kind of digital data from simple text and static images to encoded audio and video and more specialized data that enables real-time collaboration and multi-player games.
In general, a node is an application on a peer-to-peer network, typically identified by an Internet Protocol (IP) address, a port, and a name. A graph is an interconnection of such nodes on a peer-to-peer network. A peer-to-peer network is a simple, small type of network in which each node has the ability for equivalent capabilities and responsibilities. Each node can be a server and each can be a client at the same time. This differs from a client-server architecture in which some computers are dedicated to serving others.
In a peer-to-peer network, there are many time-based events. For many events, it is preferred that all nodes connected to the network share a common view of time. Such concepts as data lifetime, membership lifetime, graph partition detection, and graph partition recovery all hinge upon the fact that the nodes in the peer-to-peer network have a common concept of time among themselves.
As one example of a problem that may occur if nodes do not have a common concept of time can be found in data expiration. It is convenient if data across the network expires for each node at approximately the same time. In general, for distributed networks such as a peer-to-peer network, data will be pushed to the graph and will be removed from each node based upon an expiration time. If the expiration times are not approximately the same, then the data may exist on some nodes, and may be expired on others. This phenomenon may cause a number of problems, such as synchronization issues between the nodes.
One method for handling common time between nodes is use of Network Time Protocol (NTP). NTP is a protocol that can synchronize clocks on local computers with radio or atomic clocks on the Internet. While this system works well for its intended purpose, constantly synchronizing all nodes on a graph can be an expensive process. In addition, not all nodes may be connected to the Internet, and thus may not be able to take advantage of NTP, or a node may not be configured to synchronize with an NTP server.